登録日
2015年7月14日

メンバー検索

  

wantern

名前(ニックネーム)
わんたん
自分のconcrete5サイト
ホームページ
自己紹介
concrete5.org のユーザー名
concrete5 Slack Team ID
Twitterアカウント
フォーラム総投稿数
39

コミュニティバッジ

投稿

21から30までを表示 (計36)

カスタム属性タイプの作成方法

使用バージョン:concrete5.6.3.4
PHP Version 5.6.3RC1
IIS 8.0

表記の通りです。
カスタム属性種類にページ内リンクを追加したいのですが、
その際、フルサイトマップから選べるようにしたいです。

※現在はテキスト形式で相対パス指定したのちにページリストやオートナビ側でアドレスを解決していますが、フルサイトマップから選べたら更にスマートかなと思い投稿させていただきました。

実装方法、もしくはフリーで配布されているパッケージ等で似たような事をしている方がいらっしゃれば、情報をご提供していただけませんか?

Posted on 2月 03, 2016 at 4:51 午後

Re: システムページのオーバーライド

ありがとうございます。
私が開発しているパッケージに下記を加えることで解決いたしました。

public function on_start()
{
$env = Environment::get();

/* システムページのオーバーライド */
//ログイン
$env->overrideCoreByPackage('controllers/login.php', $this);
$env->overrideCoreByPackage('single_pages/login.php', $this);
//ユーザー一覧
$env->overrideCoreByPackage('controllers/members.php', $this);
$env->overrideCoreByPackage('single_pages/members.php', $this);
//ユーザー登録ページ
$env->overrideCoreByPackage('controllers/register.php', $this);
$env->overrideCoreByPackage('single_pages/register.php', $this);

//ユーザーマイページ
$env->overrideCoreByPackage('controllers/profile/controller.php', $this);
$env->overrideCoreByPackage('single_pages/profile/view.php', $this);
$env->overrideCoreByPackage('controllers/profile/avatar.php', $this);
$env->overrideCoreByPackage('single_pages/profile/avatar.php', $this);
$env->overrideCoreByPackage('controllers/profile/edit.php', $this);
$env->overrideCoreByPackage('single_pages/profile/edit.php', $this);
$env->overrideCoreByPackage('controllers/profile/friends.php', $this);
$env->overrideCoreByPackage('single_pages/profile/friends.php', $this);
$env->overrideCoreByPackage('controllers/profile/messages.php', $this);
$env->overrideCoreByPackage('single_pages/profile/messages.php', $this);
}

Posted on 2月 03, 2016 at 2:38 午後

システムページのオーバーライド

使用バージョン:concrete5.6.3.4
PHP Version 5.6.3RC1
IIS 8.0

■ログインページ
concrete/controllers/login.php
concrete/single_pages/login.php
■会員登録ページ
concrete/controllers/register.php
concrete/single_pages/register.php
■会員一覧
concrete/controllers/members.php
concrete/single_pages/members.php
■マイページ関連
concrete/controllers/profile/○○○.php
concrete/single_pages/profile/○○○.php


上記ファイルをパッケージからオーバーライドしてコントローラには、ある機能を追加したり
シングルページ(ビューファイル)の方に表示する項目を増やしたり、
レイアウトや、HTML構造を変更したいのですが、

1、そもそもオーバーライドでどうこうできる話でしょうか?
2、別のシングルページを追加して対応するほうがいいのか?
3、オーバーライドして対応できるのできるのであれば、どうやって実装すべきか?
4、やり方等ご存じであればご指導おねがいいたします。

よろしくお願いいたします。

Posted on 2月 03, 2016 at 10:51 午前

RSSブロックの文字化け

使用バージョン:concrete5.6.3.4
PHP Version 5.6.3RC1
IIS 8.0

タイトルの通りです。

タイトルと要約の方を選択した後表示すると
要約の最後が文字化け?(アルファベット)が表示されます。

表示するのに必要なコールされているメソッド
テキストヘルパー(text.php)192行目
function shortText($textStr, $numChars = 255, $tail = '…')
{
if (intval($numChars) == 0) {
$numChars = 255;
}
$textStr = strip_tags($textStr);
if (function_exists('mb_substr') && function_exists('mb_strlen')) {
if (mb_strlen($textStr, APP_CHARSET) > $numChars) {
$textStr = mb_substr($textStr, 0, $numChars, APP_CHARSET) . $tail;
/* ↑↑↑↑↑↑ */
}
} else {
if (strlen($textStr) > $numChars) {
$textStr = substr($textStr, 0, $numChars) . $tail;
}
}
return $textStr;
}

矢印の箇所の変換のところには特に問題はなさそうなんですが・・・。
(ifの分岐が矢印のところに来ていることは確実です)

問題の箇所に心当たりのある方はいらっしゃいますか?

Posted on 1月 22, 2016 at 3:08 午後

Re: ページ内のスタックのブロックIDの取得方法

返信ありがとうございます!

ユーザー定義スタックの中のブロック一覧は下記で取得できました!

$db = Loader::db();
$v = array( Stack::ST_TYPE_USER_ADDED );
$rs = $db->GetCol('select stName from Stacks where Stacks.stType = ?', $v );
$blocks_stack = array();
if (count($rs) > 0) {
$pcp = new Permissions($this);
foreach($rs as $garHandle) {
if ($pcp->canViewPageVersions()) {
$s = Stack::getByName($garHandle, 'RECENT');
} else {
$s = Stack::getByName($garHandle, 'ACTIVE');
}
if (is_object($s)) {
$blocksTmp = $s->getBlocks(STACKS_AREA_NAME);
$blocks_stack = array_merge($blocks_stack, $blocksTmp);
}
}
}
var_dump($blocks_stack);

Posted on 12月 18, 2015 at 7:50 午前

ページ内のスタックのブロックIDの取得方法

バージョン : concrete5.6.3.3

タイトルの通り、現在表示しているページに配置してある、スタックの中にあるブロックのIDの取得方法を教えていただけませんか。

用途はデバッグに使います。

よろしくお願いいたします

Posted on 12月 17, 2015 at 4:12 午後

Re: 記事ブロックのリンクが整形されてしまう

解決しました。

Posted on 11月 18, 2015 at 3:36 午後

記事ブロックのリンクが整形されてしまう

使用バージョン:concrete5.6.3.3

表記の通り、記事ブロックでリンクを追加ボタンを押し、
サイトマップからリンク先ページを選択すると、コード整形?が入り、
公開時にリンク先URLを確認すると
href="{CCM:CID_154}"
このようにhrefのパラメータがページIDに置き換わったまた公開され、移動できなくなっています。

※編集モードで編集中にhtmlを確認したときは、正しいリンクURLで表示されています

原因がお分かりになられる方はいらっしゃいませんか?
お力添え、お願いいたします

Posted on 11月 18, 2015 at 9:14 午前

Re: Re: 特定ページで使用しているブロックのID取得

返信ありがとうございます!

結局このような形で対応いたしました。

$c = Page::getCurrentPage(); // ページオブジェクトのインスタンス取得
$db = Loader::db(); // データベースのインスタンス取得
$q = 'SELECT DISTINCT bID FROM collectionversionblocks WHERE (cvID = ' . (int)$c->vObj->cvID . ' AND cID = ' . (int)$c->cID . ')' . " OR (arHandle = 'Main' );";
$r = $db->Execute($q, array());

while ($row = $r->FetchRow()) {
$block = Block::getByID($row["bID"]); //ブロックをインスタンス化
if($block instanceof Block){
if(method_exists($block->instance,"func")){
$block->instance->func(); //ブロックのメンバーメソッドをコール
}
}
}


ありがとうございました!

Posted on 10月 30, 2015 at 5:01 午後

Re: Re: 特定ページで使用しているブロックのID取得

ありがとうございます!

思い通りの操作ができました!

Posted on 10月 30, 2015 at 4:35 午後